package com.suse.warmstill.common.enums;

import io.swagger.annotations.Api;

import java.util.HashMap;
import java.util.Map;

/**
 * @author Jarno
 */
@Api("返回参数")
public enum ResponseEnum {
    /**
     * 码样式：【CCCBBOOXXX】
     * 编码示例说明：
     * CCC 中心编码&业务系统
     * BB   业务类型
     * OO  操作类型
     * XXX具体编码（000：表示成功，999：系统异常，998：数据库异常，NNN：其它，100：参数异常，200：业务异常）
     * 200开头代码系统默认，其余系统使用10－199之间
     */

    /*
     * 返回新token的 编码
     * */
    RETURN_NEWTOKEN(1111111111, null),


    //默认成功失败
    DEFAULT_SUCCESS(0000000000, "DEFAULTSUCESS"),
    DEFAULT_SYS_ERROR(999999999, "DEFAULT_SYS_ERROR"),


    //login
    NO_LOGIN_USER(1000000204, "账号密码输入错误"),
    NO_LOGIN(1000000200, "未登录"),
    LOGIN_EXPIRED(1000000205, "验证码过期"),
    LOGIN_CAPCHA_ERROR(1000000201, "验证码生成失败"),
    LOGIN_CAPCHA_EXPIRERROR(1000000202, "验证码过期"),
    LOGIN_CAPCHA_CODEERROR(1000000203, "验证码错误"),

    LOGIN_TOKEN_ERROR(1000000206, "非法用户"),
    LOGIN_STATUS_ERROR(1000000207, "账号已经被禁用"),
    LOGIN_TOKEN_EXPIRE(1000000208, "Token 过期"),
    LOGIN_NO_USERTOKEN(1000000209, "请求未携带token"),

    REPEAD_TOKEN_ERROR(1000000210, "用户在另外的账号登入"),

    //业务异常
    NO_OBJECT(2000000200, "数据库无此数据"),
    HAS_USER(2000000201, "该角色下有用户，不能删除"),
    REPEAT_DATA(2000000202, "数据重复"),
    PARAM_ISNULL(2000000203, "参数不能为空"),
    USER_REPEAD(2000000204, "当前电话已经注册过，不能重复注册"),


    //角色 、 逻辑 业务
    USER_NOROLE(2000000304, "该用户无 角色，请联系管理员修改"),
    USER_NOAUTHO(2000000305, "该用户无此权限"),
    INTERFACE_NOROLE(2000000306, "该接口无角色，请联系 运维人员修改"),

    //接口限流
    API_LIMITED(2000000401, "接口限流 请稍等 一分钟重试");


    private static final Map<Integer, ResponseEnum> codeMap = new HashMap<Integer, ResponseEnum>((int) (ResponseEnum.values().length / 0.75) + 1);

    static {
        for (ResponseEnum responseEnum : values()) {
            codeMap.put(responseEnum.getCode(), responseEnum);
        }
    }

    /**
     * 根据code获取枚举值
     *
     * @param code
     * @return
     */
    public static ResponseEnum valueOfCode(int code) {
        return codeMap.get(code);
    }

    private int code;
    private String msg;

    ResponseEnum(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}
